using MLSharp.Utilities;

namespace MLSharp.Clustering
{
	/// <summary>
	/// Defines a custom generator that seeds the generated data with knowledge frontier information.
	/// </summary>
	public interface IKnowledgeFrontierDataSetGenerator : IDataSetGenerator
	{
		/// <summary>
		/// The probability of creating a knowledge frontier.  Larger values
		/// will increase the likelihood of creating frontiers close to the root,
		/// smaller values will bias creation towards the leaves.
		/// </summary>
		/// <value>The default is 0.1.</value>
		double FrontierProbability { get; set; }

		/// <summary>
		/// The maximum amount of noise to apply to accuracy attributes when creating knowledge frontiers.
		/// </summary>
		/// <value>The default is 0.05.</value>
		double AccuracyNoise { get; set; }

		/// <summary>
		/// True to create a "FrontierId" attribute that will be populated with the
		/// ID of the frontier node that the corresponding instance belongs to.
		/// </summary>
		/// <value>The default is false.</value>
		bool LabelFrontiers { get; set; }
	}
}